home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Inside Mac Games Volume 4 #9
/
IMG 40 Sep 1996.iso
/
More Goodies
/
More for Your Game
/
Doom II
/
DFLE Users Folder
/
Goal & Inf demos
/
DFGOALS.TXT
next >
Wrap
Text File
|
1995-10-12
|
20KB
|
585 lines
------------------------------------------------
| HOW TO CREATE DARK FORCES MISSION GOALS |
| by Jereth Kok (kokj4m@stmichaels.vic.edu.au) |
------------------------------------------------
Acknowledgements:
-----------------
LucasArts Entertainment Company -- creators of Dark Forces
Yves Borckmans -- creator of DFUSE
Ben & Pat McBride -- makers of the DFUSE tutorials
Anyone else who I haven't mentioned and believe that they have made
a significant contribution to the world of Dark Forces editing!
G'day, fellow Dark Forces editors!
This file (DFGOALS.TXT) contains a full explanation on how to create mission
goals in Dark Forces. The demo (GOALS.EXE) gives a demonstration on how to
create simple object and trigger goals as well as tracking devices, sequence
charges and the ALL NEW BOSS GOALS!!! Remember to put the SECBASE.* files
in your DARK directory. Take a look at SECBASE.INF and SECBASE.GOL which
are relevant for making mission goals.
I assume that anyone reading this file or using the demo already has managed
to obtain Yves Borckman's DFUSE program. You will need LEVMAP, a .LEV and .O
file editor which is a part of DFUSE.
CONTENTS
--------
1. Goal overview
2. The GOL file
3. Object goals
4. Trigger goals
5. Multiple goals
6. Tracking device and sequence charges
7. Boss goals
1. GOAL OVERVIEW
----------------
A mission goal is quite self explanatory. Each Dark Forces level has mission
goals, or objectives, that must be completed. Once all of the objectives in a
level, are complete you will be allowed to press ESC and move on to the next
level.
Okay, here's the suprise. I'll bet that most people reading this believes
that mission completion is controlled by the .GOL file. Incorrect! Mission
completion is controlled in the .INF file! So you'd have better read my .INF
file explanation (INFFILE.TXT) if you want to fully understand how to make
mission goals!
What the GOL file does, is control the objective screen of your Personal Data
Assistant (PDA), accessed by pressing F1 while in the game. A
"message: [stop] [sector name] complete [num]"
that is sent from a trigger goal to a goal completion elevator (usually a
dummy sector - inaccessible to the player) will fire the goal in the GOL file
that is specified by the "[num]". This will cause your PDA to show that the
goal has been completed. Goal objects will cause this to happen through their
logics. So all that the GOL file does is displays when goals have been done,
NOT allow mission completion.
Unfortunately, however, the PDA is contained in a LFD (cutscene) file, the
format of which is as yet unknown. So therefore, home made levels which have
totally new mission objectives will not alter the PDA. The PDA will still show
the goals of the original level that is being replaced. So therefore, until
the LFD files become understood, which is very unlikely, I think that editing
the GOL file is not essential to a home made level.
The .INF file, on the other hand, is what will allow you to continue on to
the next mission once you have completed all of the mission goals. Also,
assuming that you haven't edited the TEXT.MSG file, the .INF file will
also cause the messages -
"Mission Objectives Complete"
"Press <ESC> Key to End Mission"
- to be displayed when you have completed
all of the mission goals.
2. THE GOL FILE
---------------
I'll include this explanation of the GOL file in the unlikely event that
the LFD files will become understood and editable.
This is what will be seen for an object goal:
GOAL: # ITEM: [num]
And an explanation of this:
GOAL: # -- This is the number of the goal starting from 0
and ascending in whole numbers. It corresponds
with the objective display in the PDA.
ITEM: [num] -- This corresponds with a goal object. Here are the
possible goal objects and their num:
Object - Num -
IDPLANS.WAX 0
IPHRIK.FME 1
INAVA.WAX 2
IDATA.FME 4
IDTGUN.FME 5
IPILE.FME 6
As mentioned before, the logics of the above goal objects will fire the
appropriate ITEM: [num] to show in the PDA that the goal object has been
taken.
This is what will be seen for a trigger goal:
GOAL: # TRIG: [num]
And an explanation of this:
GOAL: # -- Same as for object goals.
TRIG: [num] -- This corresponds with a trigger goal. The trigger
should have a
"message: [completion elevator] complete [num]".
This message will fire the TRIG: [num] to show in the
PDA that the goal trigger has been triggered.
3. OBJECT GOALS
---------------
Goal objects are objects that can be used as mission objectives.
These are the possible objects that can be used as goals:
IDPLANS.WAX (Death Star Plans)
IPHRIK.FME (Phrik metal)
INAVA.WAX (Nava Card)
IDTGUN.FME (Broken Dark Trooper weapon)
IDATA.FME (Data tapes)
IPILE.FME (Your gear)
This is how to make obtaining one of these objects into a mission goal:
Enter Levmap. Add one of these objects to a sector in your level (select
an existing object, move to the desired position and press Insert). Then
edit the object (Enter) and change it to one of the above frames or sprites.
The next step is VERY important - press S to change the logic of the copied
object to the logic of the new object. This is important because, as mentioned
above, the logics of these goal objects will fire the ITEM: [num] in the GOL
file. But in addition, the logics of these objects will also cause an elevator
called "complete" to move to its next stop. Therefore, by giving this elevator
"stop: [value] complete" at stop 1, mission completion will occur when the
object has been picked up.
Now you need the completion elevator. Create a dummy sector (inaccessible to
the player) in Levmap. It HAS to be called "complete". Now edit the INF file
of the level, add one to "ITEMS #" and add this item:
item: sector name: complete
seq
class: elevator move_floor
event_mask: 0
speed: 0
stop: 0 hold
stop: 1 complete
seqend
4. TRIGGER GOALS
----------------
To make a trigger goal, you will need the following in the trigger's sequence
(in the INF file, of course).
message: [completion elevator name] complete [num]
Now create a completion elevator exactly the same as with goal objects, only
this time it does not need to called "complete".
item: sector name: [completion elevator name]
seq
class: elevator move_floor
event_mask: 0
speed: 0
stop: 0 hold
stop: 1 complete
seqend
The "complete [num]" message sent from the trigger will move this elevator
to its next stop, but will also fire the TRIG: [num] in the GOL file to
show in the PDA that the trigger goal has been triggered. Once again, this
is useless since LFD files can't be edited.
5. MULTIPLE GOALS
-----------------
A level would be pretty boring with only one mission goal! Multiple goals
require the use of a dummy elevator for each goal and another dummy elevator
which is the completion elevator and is activated by each of the other dummy
elevators.
5a. Multiple goals in any order
-------------------------------
To create a level with more than one goal that can be done in any order,
you need a dummy elevator for each trigger goal and one for all goal objects.
The trigger's clients should be their dummy elevator.
The dummy elevator for goal objects needs to be called "complete", of course.
Just make sure that "complete" will only reach its final stop when all the
goal objects have been picked up. This means that "complete" needs to have 1
more stop than there are goal objects. All stops should be "hold". At the
final stop a message is sent to a completion elevator telling it to move to
its next stop.
The dummy elevators for trigger goals should have 3 stops each. They should
hold at stop 0, stay at stop 1 for a short period of time and terminate at
stop 2. They have to send a "complete" message from stop 1 to the completion
elevator.
The completion elevator needs to have its initial stop (stop 0) plus a
stop for each of the other dummy elevators. Its final stop should be a
"complete" stop.
Here's an example of the mission completion elevators in the INF file where
there are 2 goal objects and 2 trigger goals. All can be done in any order.
/* This is the dummy elevator for the object goals */
item: sector name: complete
seq
class: elevator move_floor
event_mask: 0
stop: 0 hold
stop: 1 hold
stop: 2 hold
message: 2 all_complete next_stop
speed: 0
seqend
/* This is the client dummy elevator of one of the trigger goals */
item: sector name: dummy1
seq
class: elevator move_floor
event_mask: 0
stop: 0 hold
stop: 1 0
message: 1 all_complete complete [num]
stop: 2 terminate
speed: 0
seqend
/* This is the client dummy elevator of the other trigger goal. */
item: sector name: dummy2
seq
class: elevator move_floor
event_mask: 0
stop: 0 hold
stop: 1 0
message: 1 all_complete complete [num]
stop: 2 terminate
speed: 0
seqend
/* This is the completion elevator */
item: sector name: all_complete
seq
class: elevator move_floor
event_mask: 0
stop: 0 hold
stop: 1 hold
stop: 2 hold
stop: 3 complete
speed: 0
seqend
5b. Sequential goals
--------------------
It gets more complicated if you want goals that can only be done in a
particular order. For example, you might need to get the Death Star Plans
before reaching your landing pad. What this involves is the use of the
master variable. Completing one goal would turn on the master of an elevator
which would enable another goal to be completed and so on.
Here is the above example again, but this time the goals have to be completed
in this order - object, object, trigger, trigger.
/* This is the dummy elevator for the object goals */
item: sector name: complete
seq
class: elevator move_floor
event_mask: 0
stop: 0 hold
stop: 1 hold
stop: 2 hold
message: 2 all_complete next_stop
message: 2 dummy1 master_on
speed: 0
seqend
/* This is the client dummy elevator of the first trigger goal. Its master*/
/* is initially off, but is turned on when both objects have been picked up.*/
item: sector name: dummy1
seq
class: elevator move_floor
master: off
event_mask: 0
stop: 0 hold
stop: 1 0
message: 1 all_complete complete [num]
message: 1 dummy2 master_on
stop: 2 terminate
speed: 0
seqend
/* This is the client dummy elevator of the second trigger goal. Its master*/
/* is initially off, but is turned on when the first trigger goal has been*/
/* triggered. */
item: sector name: dummy2
seq
class: elevator move_floor
master: off
event_mask: 0
stop: 0 hold
stop: 1 0
message: 1 all_complete complete [num]
stop: 2 terminate
speed: 0
seqend
/* This is the completion elevator. */
item: sector name: all_complete
seq
class: elevator move_floor
event_mask: 0
stop: 0 hold
stop: 1 hold
stop: 2 hold
stop: 3 complete
speed: 0
seqend
6. TRACKING DEVICE AND SEQUENCER CHARGES
----------------------------------------
These are two special cases of trigger goals. Here's how to make them...
6a. Tracking device
-------------------
This is found in Ramses Hed (original level 7). This is what happens: the
line with the tracking device texture is in a small alcove sector. This
sector is an elevator scroll_wall, and also a trigger. The trigger is
operated by nudging from the outside, and causes a dummy elevator to move to
its next stop. At its next stop, the dummy elevator moves the sector with the
tracking device texture (elevator scroll_wall) to its next stop at speed: 0
(instantaneous). At this stop, the dummy sector also moves another dummy
elevator to a complete stop. The wall with the tracking device texture has
flag 1 bit 128 (allow scroll mid tx), so it will scroll instantaneously to a
point which looks the same as it was before, but with the little blue thing
on it so it looks as if Kyle has placed a tracking device on it.
Here's how to create this same effect in your level:
Firstly, in Levmap, create a small rectangular sector with height 8. Two
sides should have a width of 8 and the other two sides should have a very
small width (1 or 2). Adjoin this to the desired sector so it is an alcove
at Kyle's eye level. Call this sector "track_dev". Place texture IATRKDEV.BM
on the wall opposite the wall with the adjoin. Give this wall flag 1 bit 128
(allow scroll mid tx). Add 2 dummy sectors and call them "dummy" and
"complete". Now add the following to the INF file of the level (add 3 to
"items #").
item: sector name: track_dev
seq
class: trigger
event_mask: 32
client: dummy
message: complete [num]
class: elevator scroll_wall
event_mask: 0
speed: 0
angle: 180
stop: 0 hold
stop: 64 terminate
seqend
item: sector name: dummy
seq
class: elevator move_floor
event_mask: 0
stop: 0 hold
stop: 1 0
message: 1 track_dev next_stop
message: 1 complete next_stop
stop: 2 terminate
speed: 0
seqend
item: sector name: complete
seq
class: elevator move_floor
event_mask: 0
stop: 0 hold
stop: 1 complete
speed: 0
seqend
6b. Sequencer charges
---------------------
These are found in the Gromas Mines, Robotics Facility and Arc Hammer (levels
5, 8 and 14). The concept is the same as the tracking device. Note that the
elevator scroll_wall has 3 stops in this case. Once you nudge the alcove
sector, the sequencer charge texture scrolls between 2 stops.
Here's what to do:
Firstly, in Levmap, create a small rectangular sector with height 8. Two
sides should have a width of 8 and the other two sides should have a very
small width (1 or 2). Adjoin this to the desired sector so it is an alcove
at Kyle's eye level. Call this sector "seq_charge". Place texture IWASEQUE.BM
on the wall opposite the wall with the adjoin. Give this wall flag 1 bit 128
(allow scroll mid tx). Add a dummy sector and call it "dummy". Add another
dummy sector and call it "charge_set". Add one more dummy sector and
call it "complete". Now add the following to the INF file of the level
(add 4 to "items #").
item: sector name: seq_charge
seq
class: trigger
event_mask: 32
client: dummy
message: complete [num]
class: elevator scroll_wall
event_mask: 0
speed: 0
angle: 0
stop: 192 hold
stop: 128 hold
stop: 64 hold
seqend
item: sector name: dummy
seq
class: elevator move_floor
event_mask: 0
speed: 0
stop: 0 hold
stop: 1 0
message: 1 charge_set master_on
message: 1 complete next_stop
stop: 2 terminate
seqend
item: sector name: charge_set
seq
class: elevator move_floor
event_mask: 0
master: off
speed: 0
stop: 0 0.5
message: 0 seq_charge goto_stop 1
stop: 1 0.5
message: 1 seq_charge goto_stop 2
seqend
item: sector name: complete
seq
class: elevator move_floor
event_mask: 0
stop: 0 hold
stop: 1 complete
speed: 0
seqend
7. BOSS GOALS
-------------
This is actually a little invention of mine (Sorry if someone else has come up
with this idea too!) - it's not used in any of the original levels. A boss
goal is an objective completed by killing an enemy. This could be very handy
in a "Terminate Boba Fett" or "Terminate General Mohc" level!
The following can be used as boss goals:
BOBAFETT.WAX (What do you think?!?)
KELL.WAX (Kell dragon)
PHASE1.WAX (Phase 1 Dark Trooper)
PHASE2.WAX (Phase 2 Dark Trooper)
PHASE3X.WAX (Mohc)
The principle behind this is similar to goal objects like the Death Star
Plans. A certain element in the sequence of one of these objects will cause
an elevator called "boss", (or "mohc" in the case of PHASE3X.WAX) to move
to its next stop.
This is what you need to do to turn one of these sprites into a mission
objective:
Edit the .O file of the level and find the sprite that you want to kill
in order to complete the mission. Add this to its sequence (the stuff between
"Seq" and "Seqend"):
BOSS: TRUE
Now edit your level with Levmap. Add a dummy sector called "boss" if your
boss goal is Boba Fett, a Kell dragon, a Phase 1 Dark Trooper or a Phase 2
Dark Trooper. If the boss goal is Mohc, call the dummy sector "mohc". Add
another dummy sector and call it "complete".
Add this to the INF file of the level (add 2 to "items #"):
item: sector name: boss/mohc
seq
class: elevator move_floor
event_mask: 0
stop: 0 hold
stop: 1 hold
message: 1 complete complete [num]
speed: 0
seqend
item: sector name: complete
seq
class: elevator move_floor
event_mask: 0
stop: 0 hold
stop: 1 complete
speed: 0
seqend
Well, that's all folks! If you have anything to add to this file, if you want
to correct something I have wrong, or if you just want to comment or ask a
question, mail me at
kokj4m@stmichaels.vic.edu.au
Any additions, or corrections will be put in an updated version of this file.
Include your name so that I can credit you.
Please distribute this file like crazy! Upload it on bulletin boards and
Internet pages!
Until next time, Happy Dark Forces level making!